<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');
global $data, $admin;

class Evaluacion extends CI_Controller {

    public function __construct() {
        parent::__construct();
        global $admin, $data;
        # cargamos variables
        $admin = $this->session->userdata('admin');
//        $data['place'] = 'evaluacion';
        $admin['place'] = 'evaluacion';
        # verifica si pasó por sushitto
        if ($admin['ta_tipo_administrativo_id'] != 1) {
            redirect('sushitto');
        }
        $this->carga_estadisticas();
        $this->output->enable_profiler(TRUE);
    }

    public function index() {
        global $data, $admin;
        #el cuestionario ya empezo?
        switch ($this->session->userdata('etapa')) {
            case 'A': redirect('evaluacion/etapaA');
                break;
            case 'S': redirect('evaluacion/etapaS');
                break;
            case 'P': redirect('evaluacion/etapaP');
                break;
            case 'I': redirect('evaluacion/etapaI');
                break;
        }
        $this->load->helper('date');

        $lista_sucursales = $this->evaluacion_model->lista_sucursales();
        $lista_tipos_aspi = $this->evaluacion_model->tipos_aspi();

        $data['lista_sucursales'] = $lista_sucursales;
        $data['lista_tipos_aspi'] = $lista_tipos_aspi;

        $this->load->view('template/header', $admin);
        $this->load->view('template/open_content_container');
        $this->load->view('menu/menu_supervisor', $data);
        $this->load->view('evaluacion/general/inicio_evaluacion');
        $this->load->view('template/close_content_container');
        $this->load->view('template/footer');
    }

    public function logOut() {
        #termina session de ususario
        $this->session->sess_destroy();
        redirect(base_url());
    }

    public function comenzar() {
        $this->form_validation->set_rules('comensales', 'Personas Comiendo', 'required|trim|xss_clean');
        $this->form_validation->set_rules('aforo', 'Capacidad máxima', 'required|trim|xss_clean');

        #verificamos formulario en busca de errores de ususario
        if (!$this->form_validation->run()) {
            redirect('evaluacion');
        }
        $fecha_evaluacion = $this->input->post('fecha_evaluacion');
        $tmp = explode(' ', $this->input->post('hora_inicio'));
        $hora_inicio = $tmp[0];
        $comensales = $this->input->post('comensales');
        $aforo = $this->input->post('aforo');
        $sucursal = $this->input->post('sucursal');

        $cuestionario = $this->evaluacion_model->crear_cuestionario($fecha_evaluacion, $hora_inicio, $comensales, $aforo, $sucursal);
        # la variable c_cuestionario_id determinará que el cuestionario a empezado
        $this->session->set_userdata('c_cuestionario_id', $cuestionario->id);
        $this->session->set_userdata('etapa', 'A');
        $this->session->set_userdata('ta_tipo_aspi_id', $this->input->post('tipo_aspi'));
        $this->datos_cuestionario($this->input->post('tipo_aspi'), $cuestionario->id);
        redirect('evaluacion/etapaA');
    }

    private function datos_cuestionario($tipo_aspi, $c_cuestionario_id) {
        switch ($tipo_aspi) {
            case 1:
                $this->session->set_userdata('nombre_tipo_aspi', 'Domicilio');
                break;
            case 2: $this->session->set_userdata('nombre_tipo_aspi', 'Mostrador');
                break;
            case 3: $this->session->set_userdata('nombre_tipo_aspi', 'Salón');
                break;
        }
        $this->session->set_userdata('sucursal', $this->evaluacion_model->datos_sucursal($c_cuestionario_id));
    }

# sección de etapas del cuestionario

    public function etapaA() {
        if ($this->session->userdata('etapa') != 'A') {
            redirect('evaluacion');
        }
        global $admin, $data;
        $ta_tipo_aspi_id = $this->session->userdata('ta_tipo_aspi_id');
        # carga de preguntas
        $data['bloque_A'] = $this->cargar_bloque($ta_tipo_aspi_id, 'A');
        $data['subcatid_A'] = $this->cargar_subcats($ta_tipo_aspi_id, 'A');
        $data['subA'] = $this->evaluacion_model->list_subcats($ta_tipo_aspi_id, 'A');
        #  datos de la sucursal
        $data['sucursal'] = $this->session->userdata('sucursal');
        $data['nombre_tipo_aspi'] = $this->session->userdata('nombre_tipo_aspi');
        $data['c_cuestionario_id'] = $this->session->userdata('c_cuestionario_id');

        $this->load->view('template/header', $admin);
        $this->load->view('template/open_content_container', $data);
        $this->load->view('menu/menu_supervisor');
        $this->load->view('evaluacion/cuestionarios/cuestionario_a');
        $this->load->view('template/close_content_container');
        $this->load->view('template/footer');
    }

    public function etapaS() {
        if ($this->session->userdata('etapa') != 'S') {
            redirect('evaluacion');
        }
        global $admin, $data;
        $ta_tipo_aspi_id = $this->session->userdata('ta_tipo_aspi_id');
        # carga de preguntas
        $data['bloque_S'] = $this->cargar_bloque($ta_tipo_aspi_id, 'S');
        $data['subcatid_S'] = $this->cargar_subcats($ta_tipo_aspi_id, 'S');
        $data['subS'] = $this->evaluacion_model->list_subcats($ta_tipo_aspi_id, 'S');
        # datos de la sucursal
        $data['sucursal'] = $this->session->userdata('sucursal');
        $data['nombre_tipo_aspi'] = $this->session->userdata('nombre_tipo_aspi');
        $data['c_cuestionario_id'] = $this->session->userdata('c_cuestionario_id');

        $this->load->view('template/header', $admin);
        $this->load->view('template/open_content_container', $data);
        $this->load->view('menu/menu_supervisor');
        $this->load->view('evaluacion/cuestionarios/cuestionario_s');
        $this->load->view('template/close_content_container');
        $this->load->view('template/footer');
    }

    public function etapaP() {
        if ($this->session->userdata('etapa') != 'P') {
            redirect('evaluacion');
        }
        global $admin, $data;
        $ta_tipo_aspi_id = $this->session->userdata('ta_tipo_aspi_id');
        # carga de preguntas
        $data['bloque_P'] = $this->cargar_bloque($ta_tipo_aspi_id, 'P');
        $data['subcatid_P'] = $this->cargar_subcats($ta_tipo_aspi_id, 'P');
        $data['subP'] = $this->evaluacion_model->list_subcats($ta_tipo_aspi_id, 'P');
        # datos de la sucursal
        $data['sucursal'] = $this->session->userdata('sucursal');
        $data['nombre_tipo_aspi'] = $this->session->userdata('nombre_tipo_aspi');
        $data['c_cuestionario_id'] = $this->session->userdata('c_cuestionario_id');

        $this->load->view('template/header', $admin);
        $this->load->view('template/open_content_container', $data);
        $this->load->view('menu/menu_supervisor');
        $this->load->view('evaluacion/cuestionarios/cuestionario_p');
        $this->load->view('template/close_content_container');
        $this->load->view('template/footer');
    }

    public function etapaI() {
        if ($this->session->userdata('etapa') != 'I') {
            redirect('evaluacion');
        }
        global $admin, $data;
        $ta_tipo_aspi_id = $this->session->userdata('ta_tipo_aspi_id');
        # carga de preguntas
        $data['bloque_I'] = $this->cargar_bloque($ta_tipo_aspi_id, 'I');
        $data['subcatid_I'] = $this->cargar_subcats($ta_tipo_aspi_id, 'I');
        $data['subI'] = $this->evaluacion_model->list_subcats($ta_tipo_aspi_id, 'I');
        # datos de la sucursal
        $data['sucursal'] = $this->session->userdata('sucursal');
        $data['nombre_tipo_aspi'] = $this->session->userdata('nombre_tipo_aspi');
        $data['c_cuestionario_id'] = $this->session->userdata('c_cuestionario_id');

        $this->load->view('template/header', $admin);
        $this->load->view('template/open_content_container', $data);
        $this->load->view('menu/menu_supervisor');
        $this->load->view('evaluacion/cuestionarios/cuestionario_i');
        $this->load->view('template/close_content_container');
        $this->load->view('template/footer');
    }

    public function plan_accion() {
        if ($this->session->userdata('etapa') != 'PLAN_ACCION') {
            redirect('evaluacion');
        }
        global $admin, $data;
        $c_cuestionario_id = $this->session->userdata('c_cuestionario_id');
        # carga de preguntas
        $data['plan_accion'] = $this->evaluacion_model->plan_accion($c_cuestionario_id);
        # datos de la sucursal
        $data['sucursal'] = $this->session->userdata('sucursal');
        $data['nombre_tipo_aspi'] = $this->session->userdata('nombre_tipo_aspi');

        $this->load->view('template/header', $admin);
        $this->load->view('template/open_content_container', $data);
        $this->load->view('menu/menu_supervisor');
        $this->load->view('evaluacion/general/plan_accion');
        $this->load->view('template/close_content_container');
        $this->load->view('template/footer');
    }

    public function guarda_plan() {
        #recuperar datos
        $sclave = $this->input->post('sclave');
        $desv = $this->input->post('desv');
        $accion = $this->input->post('accion');
        $fecha = $this->input->post('fecha');
        $resp = $this->input->post('resp');
        # preparando totales
        $c_cuestionario_id = $this->session->userdata('c_cuestionario_id');
        $criticos = count($this->evaluacion_model->plan_accion($c_cuestionario_id));
        for ($i = 0; $i < $criticos; $i++) {
            $pa_no_estandar = ($sclave[$i] != '') ? $sclave[$i] : 'PENDIENTE';
            $pa_descripcion_desviacion = ($desv[$i] != '') ? $desv[$i] : 'PENDIENTE';
            $pa_accion_correctiva = ($accion[$i] != '') ? $accion[$i] : 'PENDIENTE';
            $pa_fecha_cumplimiento = ($fecha[$i] != '') ? $fecha[$i] : '0000-00-00';
            $pa_responsable = ($resp[$i] != '') ? $resp[$i] : 'PENDIENTE';
            $this->evaluacion_model->guardar_accion($pa_no_estandar, $pa_descripcion_desviacion, $pa_accion_correctiva, $pa_fecha_cumplimiento, $pa_responsable, $c_cuestionario_id);
        }
        # avanzamos a la siguiente etapa
        $this->siguiente_etapa($this->session->userdata('etapa'));
    }

    public function procesar() {
        $c_cuestionario_id = $this->session->userdata('c_cuestionario_id');
        $respuesta = $this->input->post('pregunta');
        $penalizacion = $this->input->post('penalizacion');
        #verificando logitud de respuesta
        $this->verificar_resultados($respuesta);

        foreach ($respuesta as $p_pregunta_id => $c_po) {
            $this->evaluacion_model->guardar_respuesta($c_cuestionario_id, $p_pregunta_id, $c_po);
        }

        # guardamos penalizacion
        foreach ($penalizacion as $s_subcategoria_id => $cc_constante_control) {
            $this->evaluacion_model->guarda_penal($c_cuestionario_id, $s_subcategoria_id, $cc_constante_control);
        }
        # avanzamos a la siguiente etapa
        $this->siguiente_etapa($this->session->userdata('etapa'));
    }

    /**
     * Verifica que la longitud de los puntos sea positiva <br>
     * y no exeda los 3 digitos, de cumplirse alguna condicion<br>
     * se redirecciona ala etapa donde se encontró el error
     * @param type $param arreglo de preguntas
     */
    private function verificar_resultados($param) {
        foreach ($param as $p_pregunta_id => $c_po) {
            $longitud = strlen($c_po);
            if (($longitud > 3) || ($c_po < 0)) {
                redirect('evaluacion/etapa' . $this->session->userdata('etapa'));
            }
        }
    }

#hace el cambio a la siguinete etapa del cuestionario

    private function siguiente_etapa($param) {
        switch ($param) {
            case 'A':
                $this->session->set_userdata('etapa', 'S');
                redirect('evaluacion/etapaS');
                break;
            case 'S':
                $this->session->set_userdata('etapa', 'P');
                redirect('evaluacion/etapaP');
                break;
            case 'P':
                $this->session->set_userdata('etapa', 'I');
                redirect('evaluacion/etapaI');
                break;
            case 'I':
                #verificamos si hay puntos críticos
                $c_cuestionario_id = $this->session->userdata('c_cuestionario_id');
                $criticos = count($this->evaluacion_model->plan_accion($c_cuestionario_id));
                #si hay criticos
                if ($criticos != 0) {
                    $this->session->set_userdata('etapa', 'PLAN_ACCION');
                    redirect('evaluacion/plan_accion');
                } else {
                    $this->session->set_userdata('etapa', 'PLAN_ACCION');
                    redirect('evaluacion/resultados');
                }
                break;
            case 'PLAN_ACCION':
                $this->session->set_userdata('etapa', 'FINAL');
                redirect('evaluacion/resultados');
                break;
        }
    }

    public function resultados() {
        if ($this->session->userdata('etapa') != 'FINAL') {
            redirect('evaluacion');
        }
        global $admin, $data;
        $c_cuestionario_id = $this->session->userdata('c_cuestionario_id');
        $ta_tipo_aspi_id = $this->session->userdata('ta_tipo_aspi_id');

        # obtener datos para el reporte
        $data['resp_A'] = $this->lista_resp_xsubcat($ta_tipo_aspi_id, 'A', $c_cuestionario_id);
        $data['xsubctrlcal_A'] = $this->lista_parcal_xsubctrlcal($ta_tipo_aspi_id, 'A', $c_cuestionario_id);
        $data['totalxcatA'] = $this->totalxcat($data['xsubctrlcal_A']);

        $data['resp_S'] = $this->lista_resp_xsubcat($ta_tipo_aspi_id, 'S', $c_cuestionario_id);
        $data['xsubctrlcal_S'] = $this->lista_parcal_xsubctrlcal($ta_tipo_aspi_id, 'S', $c_cuestionario_id);
        $data['totalxcatS'] = $this->totalxcat($data['xsubctrlcal_S']);

        $data['resp_P'] = $this->lista_resp_xsubcat($ta_tipo_aspi_id, 'P', $c_cuestionario_id);
        $data['xsubctrlcal_P'] = $this->lista_parcal_xsubctrlcal($ta_tipo_aspi_id, 'P', $c_cuestionario_id);
        $data['totalxcatP'] = $this->totalxcat($data['xsubctrlcal_P']);

        $data['resp_I'] = $this->lista_resp_xsubcat($ta_tipo_aspi_id, 'I', $c_cuestionario_id);
        $data['xsubctrlcal_I'] = $this->lista_parcal_xsubctrlcal($ta_tipo_aspi_id, 'I', $c_cuestionario_id);
        $data['totalxcatI'] = $this->totalxcat($data['xsubctrlcal_I']);

        $data['aspi_PP'] = $data['totalxcatA']['puntos_amabilidad'] + $data['totalxcatS']['puntos_amabilidad'] + $data['totalxcatP']['puntos_amabilidad'] + $data['totalxcatI']['puntos_amabilidad'];
        $data['aspi_PO'] = $data['totalxcatA']['puntos_obtenidos'] + $data['totalxcatS']['puntos_obtenidos'] + $data['totalxcatP']['puntos_obtenidos'] + $data['totalxcatI']['puntos_obtenidos'];
        $data['aspi_CA'] = round(($data['aspi_PO'] / $data['aspi_PP']) * 100);
        $data['aspi_CT'] = $data['totalxcatA']['criticos'] + $data['totalxcatS']['criticos'] + $data['totalxcatP']['criticos'] + $data['totalxcatI']['criticos'];

        $data['subA'] = $this->evaluacion_model->list_subcats($ta_tipo_aspi_id, 'A');
        $data['subS'] = $this->evaluacion_model->list_subcats($ta_tipo_aspi_id, 'S');
        $data['subP'] = $this->evaluacion_model->list_subcats($ta_tipo_aspi_id, 'P');
        $data['subI'] = $this->evaluacion_model->list_subcats($ta_tipo_aspi_id, 'I');

        $data['lista_acciones'] = $this->evaluacion_model->lista_acciones($c_cuestionario_id);

        $data['nombre_tipo_aspi'] = $this->session->userdata('nombre_tipo_aspi');

        $this->load->view('template/header', $admin);
        $this->load->view('template/open_content_container', $data);
        $this->load->view('menu/menu_supervisor');
        $this->load->view('evaluacion/general/evaluacion_terminada');
        $this->load->view('template/close_content_container');
        $this->load->view('template/footer');
    }

    /**
     * Retorna un arreglo con los resultados parciales contabilizando la penalizacion
     * @param int $ta_tipo_aspi_id tipo aspi 1,2,3
     * @param char $c_categoria A|S|P|I
     * @param int $c_cuestionario_id id del cuestionario actual
     * @return array
     */
    private function lista_parcal_xsubctrlcal($ta_tipo_aspi_id, $c_categoria, $c_cuestionario_id) {
        $lista_subcat = $this->evaluacion_model->list_subcats($ta_tipo_aspi_id, $c_categoria);
        $datos = array();
        $index = 'A';
        foreach ($lista_subcat as $v) {
            $datos[$index] = $this->evaluacion_model->parcal_xsubctrlcal_nn($ta_tipo_aspi_id, $c_cuestionario_id, $c_categoria, $v->s_subcategoria, $v->s_subcategoria_id);
            $index++;
        }
        return $datos;
    }

    /**
     * Retorna una lista de las calificaciones de las preguntas<br>
     * dentro de un arreglo cuyo indice es la letra de su subcategoria<br>
     * ejemplo A,B,C...
     * @param int $ta_tipo_aspi_id tipo aASPI 1,2,3
     * @param char $c_categoria A|S|P|I
     * @param int $c_cuestionario_id id del cuestionario actual
     * @return array
     */
    private function lista_resp_xsubcat($ta_tipo_aspi_id, $c_categoria, $c_cuestionario_id) {
        $lista_subcat = $this->evaluacion_model->list_subcats($ta_tipo_aspi_id, $c_categoria);
        $datos = array();
        $index = 'A';
        foreach ($lista_subcat as $v) {
            $datos[$index] = $this->evaluacion_model->resp_xsubcat($ta_tipo_aspi_id, $c_cuestionario_id, $c_categoria, $v->s_subcategoria);
            $index++;
        }
        return $datos;
    }

    /**
     * Retorna el total de la categoria indicada, se utiliza para generar los totales del reporte
     * @param char $categoria
     * @return array arreglo asociativo con los totales de la categoria
     */
    private function totalxcat($categoria) {
        $totalCategoria = array();
        $totalElementos = count($categoria);
        $bandera = 0;
        $totalCategoria['puntos_amabilidad'] = 0;
        $totalCategoria['puntos_obtenidos'] = 0;
        $totalCategoria['criticos'] = 0;

        foreach ($categoria as $subcat) {
            if ($subcat->puntos_obtenidos == 'CRITICO') {
                $bandera++;
            }
            $totalCategoria['puntos_amabilidad'] +=$subcat->puntos_amabilidad;
            $totalCategoria['puntos_obtenidos'] +=$subcat->puntos_obtenidos;
            $totalCategoria['criticos'] +=$subcat->criticos;
        }

        # si todos son criticos
        if ($totalElementos == $bandera) {
            $totalCategoria['puntos_obtenidos'] = 'CRITICO';
            $totalCategoria['calific'] = 'CRITICO';
        } else {
            $totalCategoria['calific'] = round(($totalCategoria['puntos_obtenidos'] / $totalCategoria['puntos_amabilidad']) * 100);
        }
        return $totalCategoria;
    }

    /**
     * Carga un bloque de reguntas con sus recpetivos valores po pc 
     * @param int $ta_tipo_aspi_id tipo de aspi 1,2,3
     * @param char $c_categoria categoria A|S|P|I
     * @return array bloque de preguntas con un indice asociativo
     */
    private function cargar_bloque($ta_tipo_aspi_id, $c_categoria) {
        $lista_subcat = $this->evaluacion_model->list_subcats($ta_tipo_aspi_id, $c_categoria);
        $datos = array();
        $index = 'A';
        foreach ($lista_subcat as $v) {
            $datos[$index] = $this->evaluacion_model->carga_bloque($c_categoria, $v->s_subcategoria, $ta_tipo_aspi_id);
            $index++;
        }
        return $datos;
    }

    /**
     * Retorna un arreglo con los indices de la subcategorias
     * @param int $ta_tipo_aspi_id id del tipo aspi 1,2,3
     * @param char $c_categoria  A S P I
     * @return array con los id de las subcategorias
     */
    private function cargar_subcats($ta_tipo_aspi_id, $c_categoria) {
        $lista_subcat = $this->evaluacion_model->list_subcats($ta_tipo_aspi_id, $c_categoria);
        $datos = array();
        $index = 'A';
        foreach ($lista_subcat as $v) {
            $datos[$index] = $this->evaluacion_model->subcatid($c_categoria, $v->s_subcategoria, $ta_tipo_aspi_id);
            $index++;
        }
        return $datos;
    }

    /**
     * Retorna un arreglo con los indices de la subcategorias
     * @param int $ta_tipo_aspi_id id del tipo aspi 1,2,3
     * @param char $c_categoria  A S P I
     * @return array con los id de las subcategorias
     */
    private function cargar_subcats_ctrolc($ta_tipo_aspi_id, $c_categoria) {
        $lista_subcat = $this->evaluacion_model->list_subcats($ta_tipo_aspi_id, $c_categoria);
        $c_cuestionario_id = $this->session->userdata('c_cuestionario_id');
        $datos = array();
        $index = 'A';
        foreach ($lista_subcat as $v) {
            $datos[$index] = $this->evaluacion_model->const_control($c_categoria, $v->s_subcategoria, $ta_tipo_aspi_id, $c_cuestionario_id);
            $index++;
        }
        return $datos;
    }

    public function pdf() {
        if ($this->session->userdata('etapa') != 'FINAL') {
            redirect('evaluacion');
        }
        global $data;
        $c_cuestionario_id = $this->session->userdata('c_cuestionario_id');
        $ta_tipo_aspi_id = $this->session->userdata('ta_tipo_aspi_id');
        $nombre_tipo_aspi = $this->session->userdata('nombre_tipo_aspi');
        $sucursal = $this->session->userdata('sucursal');
        $filename = "reporte" . rand(100, 999) . ".pdf";

        # obtener datos para el reporte
        $resp_A = $this->lista_resp_xsubcat($ta_tipo_aspi_id, 'A', $c_cuestionario_id);
        $xsubctrlcal_A = $this->lista_parcal_xsubctrlcal($ta_tipo_aspi_id, 'A', $c_cuestionario_id);
        $totalxcatA = $this->totalxcat($xsubctrlcal_A);

        $resp_S = $this->lista_resp_xsubcat($ta_tipo_aspi_id, 'S', $c_cuestionario_id);
        $xsubctrlcal_S = $this->lista_parcal_xsubctrlcal($ta_tipo_aspi_id, 'S', $c_cuestionario_id);
        $totalxcatS = $this->totalxcat($xsubctrlcal_S);

        $resp_P = $this->lista_resp_xsubcat($ta_tipo_aspi_id, 'P', $c_cuestionario_id);
        $xsubctrlcal_P = $this->lista_parcal_xsubctrlcal($ta_tipo_aspi_id, 'P', $c_cuestionario_id);
        $totalxcatP = $this->totalxcat($xsubctrlcal_P);

        $resp_I = $this->lista_resp_xsubcat($ta_tipo_aspi_id, 'I', $c_cuestionario_id);
        $xsubctrlcal_I = $this->lista_parcal_xsubctrlcal($ta_tipo_aspi_id, 'I', $c_cuestionario_id);
        $totalxcatI = $this->totalxcat($xsubctrlcal_I);

        $aspi_PP = $totalxcatA['puntos_amabilidad'] + $totalxcatS['puntos_amabilidad'] + $totalxcatP['puntos_amabilidad'] + $totalxcatI['puntos_amabilidad'];
        $aspi_PO = $totalxcatA['puntos_obtenidos'] + $totalxcatS['puntos_obtenidos'] + $totalxcatP['puntos_obtenidos'] + $totalxcatI['puntos_obtenidos'];
        $aspi_CA = round(($aspi_PO / $aspi_PP) * 100);
        $aspi_CT = $totalxcatA['criticos'] + $totalxcatS['criticos'] + $totalxcatP['criticos'] + $totalxcatI['criticos'];

        $subA = $this->evaluacion_model->list_subcats($ta_tipo_aspi_id, 'A');
        $subS = $this->evaluacion_model->list_subcats($ta_tipo_aspi_id, 'S');
        $subP = $this->evaluacion_model->list_subcats($ta_tipo_aspi_id, 'P');
        $subI = $this->evaluacion_model->list_subcats($ta_tipo_aspi_id, 'I');

        $cuestionario = $this->evaluacion_model->datos_cuestionario($c_cuestionario_id);
        $lista_acciones = $this->evaluacion_model->lista_acciones($c_cuestionario_id);

        $this->load->library('Pdf');
        $pdf = new Pdf('P', 'mm', 'A4', true, 'UTF-8', false);
        $pdf->SetCreator(PDF_CREATOR);
        $pdf->SetAuthor('Frederick Valentin');
        $pdf->SetTitle('Evaluación ASPI');
        $pdf->SetSubject('TITULO');
        $pdf->SetKeywords('ASPI, MTI, hk');

        // datos por defecto de cabecera, se pueden modificar en el archivo tcpdf_config_alt.php de libraries/config
        $PDF_HEADER_LOGO = "sushiitto_logo.png";
        $PDF_HEADER_TITLE = "Sistema de evaluación ASPI";
        $PDF_HEADER_STRING = "Cuestionario: " . $nombre_tipo_aspi;
        $pdf->SetHeaderData($PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, $PDF_HEADER_TITLE, $PDF_HEADER_STRING, array(103, 58, 183), array(0, 64, 128));
        $pdf->setFooterData($tc = array(103, 58, 183), $lc = array(103, 58, 183));

        // datos por defecto de cabecera, se pueden modificar en el archivo tcpdf_config.php de libraries/config
        $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
        $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));

        // se pueden modificar en el archivo tcpdf_config.php de libraries/config
        $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

        // se pueden modificar en el archivo tcpdf_config.php de libraries/config
        $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
        $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
        $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

        // se pueden modificar en el archivo tcpdf_config.php de libraries/config
        $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

        //relación utilizada para ajustar la conversión de los píxeles
        $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);


        // ---------------------------------------------------------
        // establecer el modo de fuente por defecto
        $pdf->setFontSubsetting(true);

        // Establecer el tipo de letra
        //Si tienes que imprimir carácteres ASCII estándar, puede utilizar las fuentes básicas como
        // Helvetica para reducir el tamaño del archivo.
        $pdf->SetFont('Helvetica', '', 8, '', true);

        // Añadir una página
        // Este método tiene varias opciones, consulta la documentación para más información.
        $pdf->AddPage();

        //fijar efecto de sombra en el texto
        $style = file_get_contents(PDF_PATH_HK . 'aspi_styles.html', true);

        //preparamos y maquetamos el contenido a crear
        $html = '' . $style;
        $x = 150;
        $pdf->SetXY($x, 23);
        $pdf->Cell(55, 0, 'Unidad: ' . $sucursal->s_nombre, 'B', 1, 'C', 0, '', 0);
        $pdf->SetXY($x, 28);
        $pdf->Cell(55, 0, 'Fecha: ' . $cuestionario->c_fecha, 'B', 1, 'C', 0, '', 0);
        $pdf->SetXY($x, 33);
        $pdf->Cell(55, 0, 'Horario: ' . $cuestionario->c_horario_inicio, 'B', 1, 'C', 0, '', 0);
        $pdf->SetXY($x, 38);
        $pdf->Cell(55, 0, 'Aforo: ' . $cuestionario->c_aforo, 'B', 1, 'C', 0, '', 0);
        $pdf->SetXY($x, 43);
        $pdf->Cell(55, 0, 'Comenzales: ' . $cuestionario->c_comensales, 'B', 1, 'C', 0, '', 0);

        $html.='<h2> Resumen de Auditoria ASPI </h2> 
            <table class="tablaTotal" >
                    <tr>
                        <td>RESUMEN AUDITORÍA</td>
                        <td>PUNTOS POSIBLES</td>
                        <td>PUNTOS OBTENIDOS</td>
                        <td>RESULTADOS %</td>
                        <td>NO. CRÍTICOS</td>
                    </tr>
                    <tr >
                    <td>AMABILIDAD</td>
                        <td>' . $totalxcatA['puntos_amabilidad'] . '</td>
                        <td>' . $totalxcatA['puntos_obtenidos'] . '</td>
                        <td>' . $totalxcatA['calific'] . '</td>
                        <td>' . $totalxcatA['criticos'] . '</td>
                    </tr>
                    <tr>
                       <td>SERVICIO</td>
                       <td>' . $totalxcatS['puntos_amabilidad'] . '</td>
                       <td>' . $totalxcatS['puntos_obtenidos'] . '</td>
                       <td>' . $totalxcatS['calific'] . '</td>
                       <td>' . $totalxcatS['criticos'] . '</td>
                   </tr>
                   <tr >
                       <td>PRODUCTO</td>
                       <td>' . $totalxcatP['puntos_amabilidad'] . '</td>
                       <td>' . $totalxcatP['puntos_obtenidos'] . '</td>
                       <td>' . $totalxcatP['calific'] . '</td>
                       <td>' . $totalxcatP['criticos'] . '</td>
                   </tr>
                   <tr >
                       <td>IMAGEN</td>
                       <td>' . $totalxcatI['puntos_amabilidad'] . '</td>
                       <td>' . $totalxcatI['puntos_obtenidos'] . '</td>
                       <td>' . $totalxcatI['calific'] . '</td>
                       <td>' . $totalxcatI['criticos'] . '</td>
                   </tr>

                   <tr>
                       <td>ASPI TOTAL</td>
                       <td>' . $aspi_PP . '</td>
                       <td>' . $aspi_PO . '</td>
                       <td>' . $aspi_CA . '</td>
                       <td>' . $aspi_CT . '</td>
                   </tr>
               </table>';

        // Imprimimos el texto con writeHTMLCell()
        $pdf->writeHTMLCell(140, $h = 8, 12, 20, $html, 0, $ln = 1, FALSE, $reseth = FALSE, 'L', $autopadding = true);

        $pdf->SetXY($x, 60);
        $html = $style . '<h2> Semáforo </h2>';
        $pdf->writeHTML($html, $ln = true);

        $amabilidad1 = ($totalxcatA['calific'] < 80 || $totalxcatA['calific'] == 'CRITICO') ? "ESTADO CRITICO" : "";
        $amabilidad2 = ($totalxcatA['calific'] < 90 && $totalxcatA['calific'] >= 80) ? "INCUMPLIMIENTO" : "";
        $amabilidad3 = ($totalxcatA['calific'] <= 100 && $totalxcatA['calific'] >= 90) ? "SATISFACTORIO" : "";

        $servicio1 = ($totalxcatS['calific'] < 80 || $totalxcatS['calific'] == 'CRITICO') ? "ESTADO CRITICO" : "";
        $servicio2 = ($totalxcatS['calific'] < 90 && $totalxcatS['calific'] >= 80) ? "INCUMPLIMIENTO" : "";
        $servicio3 = ($totalxcatS['calific'] <= 100 && $totalxcatS['calific'] >= 90) ? "SATISFACTORIO" : "";

        $producto1 = ($totalxcatP['calific'] < 80 || $totalxcatP['calific'] == 'CRITICO') ? "ESTADO CRITICO" : "";
        $producto2 = ($totalxcatP['calific'] < 90 && $totalxcatP['calific'] >= 80) ? "INCUMPLIMIENTO" : "";
        $producto3 = ($totalxcatP['calific'] <= 100 && $totalxcatP['calific'] >= 90) ? "SATISFACTORIO" : "";

        $imagen1 = ($totalxcatI['calific'] < 80 || $totalxcatI['calific'] == 'CRITICO') ? "ESTADO CRITICO" : "";
        $imagen2 = ($totalxcatI['calific'] < 90 && $totalxcatI['calific'] >= 80) ? "INCUMPLIMIENTO" : "";
        $imagen3 = ($totalxcatI['calific'] <= 100 && $totalxcatI['calific'] >= 90) ? "SATISFACTORIO" : "";

        $html = ' 
	    <table class="semaforo" >
	        <tr>
	            <td>AMABILIDAD</td>
	            <td bgcolor="#F44336">' . $amabilidad1 . '</td>
	            <td bgcolor="#FFEE58">' . $amabilidad2 . '</td>
	            <td bgcolor="#4CAF50">' . $amabilidad3 . '</td>
	        </tr>
	        <tr >
	            <td>SERVICIO</td>
	            <td bgcolor="#F44336">' . $servicio1 . '</td>
	            <td bgcolor="#FFEE58">' . $servicio2 . '</td>
	            <td bgcolor="#4CAF50">' . $servicio3 . '</td>
	        </tr>
                <tr>
	            <td>PRODUCTO</td>
	            <td bgcolor="#F44336">' . $producto1 . '</td>
	            <td bgcolor="#FFEE58">' . $producto2 . '</td>
	            <td bgcolor="#4CAF50">' . $producto3 . '</td>
	        </tr>
                <tr>
	            <td>IMAGEN</td>
	            <td bgcolor="#F44336">' . $imagen1 . '</td>
	            <td bgcolor="#FFEE58">' . $imagen2 . '</td>
	            <td bgcolor="#4CAF50">' . $imagen3 . '</td>
	        </tr>
            </table>';

        // Imprimimos el texto con writeHTMLCell()
        $pdf->writeHTMLCell(0, $h = 8, 12, 67, $html, 0, $ln = 1, FALSE, $reseth = FALSE, 'C', $autopadding = true);

        $pdf->SetXY($x, 88);
        $html = $style . '<h2> Amabilidad </h2>';
        $pdf->writeHTML($html, $ln = true);

        $html = '<table class="amabilidad" >';
        foreach ($subA as $v) {
            $html.='<tr bgcolor="#673AB7" color="#FFFFFF">
                        <td >' . $v->s_subcategoria . '</td>
                        <td>' . $v->s_nombre . '</td>
                        <td> PP </td>
                        <td> PC </td>
                        <td> PO </td>
                    </tr>';
            $bandera = TRUE;
            foreach ($resp_A[$v->s_subcategoria] as $v) {
                if ($bandera) {
                    $color = 'F5F5F5';
                } else {
                    $color = 'E0E0E0';
                }
                $html .='<tr bgcolor="#' . $color . '">
                            <td>' . $v->sclave . '</td>
                            <td>' . $v->p_pregunta . '</td>
                            <td>' . $v->p_pp . '</td>
                            <td>' . $v->p_pc . '</td>
                            <td>' . $v->c_po . '</td>
                        </tr>';
                $bandera = !$bandera;
            }

            $html .='<tr bgcolor="#7E57C2" color="#FFFFFF">
                        <td>Puntos Posibles Amabilidad</td>
                        <td>Puntos obtenidos</td>
                        <td>Calific. %</td>
                        <td>No. De críticos</td>
                        <td>Penalización</td>
                    </tr>
                    <tr>
                        <td>' . $xsubctrlcal_A[$v->s_subcategoria]->puntos_amabilidad . '</td>
                        <td>' . $xsubctrlcal_A[$v->s_subcategoria]->puntos_obtenidos . '</td>
                        <td>' . $xsubctrlcal_A[$v->s_subcategoria]->calific . '</td>
                        <td>' . $xsubctrlcal_A[$v->s_subcategoria]->criticos . '</td>
                        <td>' . $xsubctrlcal_A[$v->s_subcategoria]->cc_constante_control . '</td>
                    </tr>';
        }

        $html .='<tr bgcolor="#9575CD" color="#FFFFFF">
                    <td >Total Amabilidad</td>
                    <td>Puntos  posibles Amabilidad</td>
                    <td>Puntos obtenidos</td>
                    <td>Calific. %</td>
                    <td>No. De críticos</td>
                </tr>
                <tr>
                    <td ></td>
                    <td>' . $totalxcatA['puntos_amabilidad'] . '</td>
                    <td>' . $totalxcatA['puntos_obtenidos'] . '</td>
                    <td>' . $totalxcatA['calific'] . '</td>
                    <td>' . $totalxcatA['criticos'] . '</td>
                </tr>
            </table>';
        $pdf->writeHTMLCell(0, $h = 8, 12, 100, $html, 0, $ln = 1, FALSE, $reseth = TRUE, 'C', $autopadding = true);

        $pdf->SetFont('Helvetica', '', 8, '', true);
        $pdf->AddPage('P');
        $pdf->SetXY($x, 20);
        $html = $style . '<h2> Servicio </h2>';
        $pdf->writeHTML($html, $ln = true);

        $html = '<table class="amabilidad" >';
        foreach ($subS as $v) {
            $html.='<tr bgcolor="#1976D2" color="#FFFFFF">
                        <td>' . $v->s_subcategoria . '</td>
                        <td>' . $v->s_nombre . '</td>
                        <td> PP </td>
                        <td> PC </td>
                        <td> PO </td>
                    </tr>';
            $bandera = TRUE;
            foreach ($resp_S[$v->s_subcategoria] as $v) {
                if ($bandera) {
                    $color = 'F5F5F5';
                } else {
                    $color = 'E0E0E0';
                }
                $html .='<tr bgcolor="#' . $color . '">
                            <td>' . $v->sclave . '</td>
                            <td>' . $v->p_pregunta . '</td>
                            <td>' . $v->p_pp . '</td>
                            <td>' . $v->p_pc . '</td>
                            <td>' . $v->c_po . '</td>
                        </tr>';
                $bandera = !$bandera;
            }

            $html .='<tr bgcolor="#00BCD4" color="#FFFFFF">
                        <td>Puntos Posibles Amabilidad</td>
                        <td>Puntos obtenidos</td>
                        <td>Calific. %</td>
                        <td>No. De críticos</td>
                        <td>Penalización</td>
                    </tr>
                    <tr>
                        <td>' . $xsubctrlcal_S[$v->s_subcategoria]->puntos_amabilidad . '</td>
                        <td>' . $xsubctrlcal_S[$v->s_subcategoria]->puntos_obtenidos . '</td>
                        <td>' . $xsubctrlcal_S[$v->s_subcategoria]->calific . '</td>
                        <td>' . $xsubctrlcal_S[$v->s_subcategoria]->criticos . '</td>
                        <td>' . $xsubctrlcal_S[$v->s_subcategoria]->cc_constante_control . '</td>
                    </tr>';
        }

        $html .='<tr bgcolor="#039BE5" color="#FFFFFF">
                    <td >Total Servicio</td>
                    <td>Puntos  posibles Amabilidad</td>
                    <td>Puntos obtenidos</td>
                    <td>Calific. %</td>
                    <td>No. De críticos</td>
                </tr>
                <tr>
                     <td></td>
                    <td>' . $totalxcatS['puntos_amabilidad'] . '</td>
                    <td>' . $totalxcatS['puntos_obtenidos'] . '</td>
                    <td>' . $totalxcatS['calific'] . '</td>
                    <td>' . $totalxcatS['criticos'] . '</td>
                </tr>
            </table>';
        $pdf->writeHTMLCell(0, $h = 8, 12, 25, $html, 0, $ln = 1, FALSE, $reseth = TRUE, 'C', $autopadding = true);


        $pdf->SetFont('Helvetica', '', 8, '', true);
        $pdf->AddPage('P');
        $pdf->SetXY($x, 20);
        $html = $style . '<h2> Producto </h2>';
        $pdf->writeHTML($html, $ln = true);

        $html = '<table class="producto" >';
        foreach ($subP as $v) {
            $html.='<tr bgcolor="#388E3C" color="#FFFFFF">
                        <td>' . $v->s_subcategoria . '</td>
                        <td>' . $v->s_nombre . '</td>
                        <td> PP </td>
                        <td> PC </td>
                        <td> PO </td>
                    </tr>';
            $bandera = TRUE;
            foreach ($resp_P[$v->s_subcategoria] as $v) {
                if ($bandera) {
                    $color = 'F5F5F5';
                } else {
                    $color = 'E0E0E0';
                }
                $html .='<tr bgcolor="#' . $color . '">
                            <td>' . $v->sclave . '</td>
                            <td>' . $v->p_pregunta . '</td>
                            <td>' . $v->p_pp . '</td>
                            <td>' . $v->p_pc . '</td>
                            <td>' . $v->c_po . '</td>
                        </tr>';
                $bandera = !$bandera;
            }

            $html .='<tr bgcolor="#4CAF50" color="#FFFFFF">
                        <td>Puntos Posibles Producto</td>
                        <td>Puntos obtenidos</td>
                        <td>Calific. %</td>
                        <td>No. De críticos</td>
                        <td>Penalización</td>
                    </tr>
                    <tr>
                        <td>' . $xsubctrlcal_P[$v->s_subcategoria]->puntos_amabilidad . '</td>
                        <td>' . $xsubctrlcal_P[$v->s_subcategoria]->puntos_obtenidos . '</td>
                        <td>' . $xsubctrlcal_P[$v->s_subcategoria]->calific . '</td>
                        <td>' . $xsubctrlcal_P[$v->s_subcategoria]->criticos . '</td>
                        <td>' . $xsubctrlcal_P[$v->s_subcategoria]->cc_constante_control . '</td>
                    </tr>';
        }

        $html .='<tr bgcolor="#558B2F" color="#FFFFFF">
                    <td >Total Producto</td>
                    <td>Puntos  posibles Producto</td>
                    <td>Puntos obtenidos</td>
                    <td>Calific. %</td>
                    <td>No. De críticos</td>
                </tr>
                <tr>
                <td></td>
                    <td>' . $totalxcatP['puntos_amabilidad'] . '</td>
                    <td>' . $totalxcatP['puntos_obtenidos'] . '</td>
                    <td>' . $totalxcatP['calific'] . '</td>
                    <td>' . $totalxcatP['criticos'] . '</td>
                </tr>
            </table>';
        $pdf->writeHTMLCell(0, $h = 8, 12, 25, $html, 0, $ln = 1, FALSE, $reseth = TRUE, 'C', $autopadding = true);


        $pdf->SetFont('Helvetica', '', 8, '', true);
        $pdf->AddPage('P');
        $pdf->SetXY($x, 20);
        $html = $style . '<h2> Imagen </h2>';
        $pdf->writeHTML($html, $ln = true);

        $html = '<table class="imagen" >';
        foreach ($subI as $v) {
            $html.='<tr bgcolor="#F4511E" color="#FFFFFF">
                        <td>' . $v->s_subcategoria . '</td>
                        <td>' . $v->s_nombre . '</td>
                        <td> PP </td>
                        <td> PC </td>
                        <td> PO </td>
                    </tr>';
            $bandera = TRUE;
            foreach ($resp_I[$v->s_subcategoria] as $v) {
                if ($bandera) {
                    $color = 'F5F5F5';
                } else {
                    $color = 'E0E0E0';
                }
                $html .='<tr bgcolor="#' . $color . '">
                            <td>' . $v->sclave . '</td>
                            <td>' . $v->p_pregunta . '</td>
                            <td>' . $v->p_pp . '</td>
                            <td>' . $v->p_pc . '</td>
                            <td>' . $v->c_po . '</td>
                        </tr>';
                $bandera = !$bandera;
            }

            $html .='<tr bgcolor="#FF5722" color="#FFFFFF">
                        <td>Puntos Posibles Amabilidad</td>
                        <td>Puntos obtenidos</td>
                        <td>Calific. %</td>
                        <td>No. De críticos</td>
                        <td>Penalización</td>
                    </tr>
                    <tr>
                        <td>' . $xsubctrlcal_I[$v->s_subcategoria]->puntos_amabilidad . '</td>
                        <td>' . $xsubctrlcal_I[$v->s_subcategoria]->puntos_obtenidos . '</td>
                        <td>' . $xsubctrlcal_I[$v->s_subcategoria]->calific . '</td>
                        <td>' . $xsubctrlcal_I[$v->s_subcategoria]->criticos . '</td>
                        <td>' . $xsubctrlcal_I[$v->s_subcategoria]->cc_constante_control . '</td>
                    </tr>';
        }

        $html .='<tr bgcolor="#FF3D00" color="#FFFFFF">
                    <td >Total Amabilidad</td>
                    <td>Puntos  posibles Amabilidad</td>
                    <td>Puntos obtenidos</td>
                    <td>Calific. %</td>
                    <td>No. De críticos</td>
                </tr>
                <tr>
                    <td></td>
                    <td>' . $totalxcatI['puntos_amabilidad'] . '</td>
                    <td>' . $totalxcatI['puntos_obtenidos'] . '</td>
                    <td>' . $totalxcatI['calific'] . '</td>
                    <td>' . $totalxcatI['criticos'] . '</td>
                </tr>
            </table>';
        $pdf->writeHTMLCell(0, $h = 8, 12, 25, $html, 0, $ln = 1, FALSE, $reseth = TRUE, 'C', $autopadding = true);

        $pdf->SetFont('Helvetica', '', 8, '', true);
        $pdf->AddPage('P');
        $pdf->SetXY($x, 20);
        $html = $style . '<h2> Plan de Acción </h2>';
        $pdf->writeHTML($html, $ln = true);
        $html = '<table >
         <tr bgcolor="#7986CB" color="#FFFFFF">
            <td>No. Estándar</td>
            <td>Descripción de desviación</td>
            <td>Acción correctiva</td>
            <td>Fecha de Cumplimiento</td>
            <td>Responsable</td>
        </tr>';
        $bandera = TRUE;
        foreach ($lista_acciones as $a) {
            if ($bandera) {
                $color = 'F5F5F5';
            } else {
                $color = 'E0E0E0';
            }
            $html .='<tr bgcolor="#' . $color . '">
                <td>' . $a->pa_no_estandar . '</td>
                <td>' . $a->pa_descripcion_desviacion . '</td>
                <td>' . $a->pa_accion_correctiva . '</td>
                <td>' . $a->pa_fecha_cumplimiento . '</td>
                <td>' . $a->pa_responsable . '</td>
            </tr>';
            $bandera = !$bandera;
        }
        $html.= '</table>';
        $pdf->writeHTMLCell(0, $h = 8, 12, 25, $html, 0, $ln = 1, FALSE, $reseth = TRUE, 'C', $autopadding = true);

        // ---------------------------------------------------------
        // Cerrar el documento PDF y preparamos la salida
        // Este método tiene varias opciones, consulte la documentación para más información.
        $nombre_archivo = utf8_decode($filename);
        $pdf->Output($nombre_archivo, 'D');
    }

    public function edicion($categoria) {
        if ($this->session->userdata('etapa') != 'FINAL') {
            redirect('evaluacion');
        }
        global $admin, $data;
        $ta_tipo_aspi_id = $this->session->userdata('ta_tipo_aspi_id');
        $c_cuestionario_id = $this->session->userdata('c_cuestionario_id');

        # carga de preguntas
        $data['resp'] = $this->lista_resp_xsubcat($ta_tipo_aspi_id, $categoria, $c_cuestionario_id);
        $data['subcatid'] = $this->cargar_subcats_ctrolc($ta_tipo_aspi_id, $categoria);
        $data['sub'] = $this->evaluacion_model->list_subcats($ta_tipo_aspi_id, $categoria);
        $data['categoria'] = $categoria;
        #  datos de la sucursal
        $data['sucursal'] = $this->session->userdata('sucursal');
        $data['nombre_tipo_aspi'] = $this->session->userdata('nombre_tipo_aspi');
        $data['c_cuestionario_id'] = $this->session->userdata('c_cuestionario_id');

        $this->load->view('template/header', $admin);
        $this->load->view('template/open_content_container', $data);
        $this->load->view('menu/menu_supervisor');
        $this->load->view('evaluacion/edicion/cuestionario');
        $this->load->view('template/close_content_container');
        $this->load->view('template/footer');
    }

    public function actualizar() {
        $c_cuestionario_id = $this->session->userdata('c_cuestionario_id');
        $respuesta = $this->input->post('pregunta');
        $penalizacion = $this->input->post('penalizacion');

        #verificando logitud de respuesta
        $this->verificar_resultados($respuesta);

        foreach ($respuesta as $c_calificacion_id => $c_po) {
            $this->evaluacion_model->actualiza_respuesta($c_po, $c_calificacion_id);
        }

        # guardamos penalizacion
        foreach ($penalizacion as $s_subcategoria_id => $cc_constante_control) {
            $this->evaluacion_model->actualiza_penal($c_cuestionario_id, $s_subcategoria_id, $cc_constante_control);
        }

        $this->purge_my_plan();
        # avanzamos a la siguiente etapa
        redirect('evaluacion/resultados');
    }

    private function purge_my_plan() {
        $c_cuestionario_id = $this->session->userdata('c_cuestionario_id');
        # carga de preguntas
        $plan_accion = $this->evaluacion_model->plan_accion($c_cuestionario_id);
        $white_list = "";
        foreach ($plan_accion as $p) {
            $v = $this->evaluacion_model->verifica_plan($c_cuestionario_id, $p->sclave);
            $white_list.="'$p->sclave',";
            #si no existe el nuevo estandar se agrega
            if (!$v->t) {
                $pa_no_estandar = $p->sclave;
                $pa_descripcion_desviacion = 'PENDIENTE';
                $pa_accion_correctiva = 'PENDIENTE';
                $pa_fecha_cumplimiento = '0000-00-00';
                $pa_responsable = 'PENDIENTE';
                $this->evaluacion_model->guardar_accion($pa_no_estandar, $pa_descripcion_desviacion, $pa_accion_correctiva, $pa_fecha_cumplimiento, $pa_responsable, $c_cuestionario_id);
            }
        }
        $white_list = trim($white_list, ',');
        # si hay errores entonces no se purga el plan
        if (strlen($white_list) > 2) {
            $this->evaluacion_model->purge($c_cuestionario_id, $white_list);
        } else {
            $this->evaluacion_model->full_purge($c_cuestionario_id);
        }
    }

    public function edit_plan() {
        global $admin, $data;
        $c_cuestionario_id = $this->session->userdata('c_cuestionario_id');
        # carga de preguntas
        $data['plan_accion'] = $this->evaluacion_model->plan_accion_data($c_cuestionario_id);
        # datos de la sucursal
        $data['sucursal'] = $this->session->userdata('sucursal');
        $data['nombre_tipo_aspi'] = $this->session->userdata('nombre_tipo_aspi');

        $this->load->view('template/header', $admin);
        $this->load->view('template/open_content_container', $data);
        $this->load->view('menu/menu_supervisor');
        $this->load->view('evaluacion/edicion/plan_accion');
        $this->load->view('template/close_content_container');
        $this->load->view('template/footer');
    }

    public function update_plan() {
        #recuperar datos
        $desv = $this->input->post('desv');
        $accion = $this->input->post('accion');
        $fecha = $this->input->post('fecha');
        $resp = $this->input->post('resp');
        $id = $this->input->post('id');
        # preparando totales
        $c_cuestionario_id = $this->session->userdata('c_cuestionario_id');
        $criticos = count($this->evaluacion_model->plan_accion($c_cuestionario_id));
        for ($i = 0; $i < $criticos; $i++) {
            $pa_descripcion_desviacion = ($desv[$i] != '') ? $desv[$i] : 'PENDIENTE';
            $pa_accion_correctiva = ($accion[$i] != '') ? $accion[$i] : 'PENDIENTE';
            $pa_fecha_cumplimiento = ($fecha[$i] != '') ? $fecha[$i] : '0000-00-00';
            $pa_responsable = ($resp[$i] != '') ? $resp[$i] : 'PENDIENTE';
            $pa_plan_accion_id = $id[$i];
            $this->evaluacion_model->update_accion($pa_descripcion_desviacion, $pa_accion_correctiva, $pa_fecha_cumplimiento, $pa_responsable, $pa_plan_accion_id);
        }
        redirect('evaluacion/resultados');
    }

    public function carga_estadisticas() {
        global $data, $admin;
        $data['tPreg'] = $this->mining_model->total_preguntas();
        $data['tCuest'] = $this->mining_model->total_cuestionarios();
    }

}
